<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>面向对象</title>
</head>
<body>

</body>
<script>

    /*
    * 面向对象:
    * js是一门面向对象的语言, 面向对象是一种编程思想(万物皆对象)与之对应的是面向过程(类);
    * js本身就是基于面向对象构建出来的(例如:JS中有很多内置类, Array, Object, Function, String; 像Promise就是ES6中新增的一个内置类, 我们可以基于new Promise来创建一个实例, 管理异编程),
    * 一般我们平时用的VUE/REACT/JQUERY也都是基于面向对象构建出来,他们都是累,平时开发的时候都是创建他们的实例来操作.
    * 我在自己真实项目中,也封过过一些组件插件指令(面向对象,插件:NODE路由, sw),他们也是基于面向对象开发的,这样可以创造不同的实例,来管理私有属性和公有的方法.
    * 面向过程: ***
    *
    * 面向对象(OOP) 类
    * 1. 类 封装 继承 多态
    *   封装: 低耦合高内聚
    *   多态: 重载和重写
    *       重载: js中是没有重载概念的(后端: 方法名相同,但是形参个数不同或者类型不一样,或者返回值不同(类型),根据传参的不同,实现不同的效果)
    *       重写: 在类的继承中, 子类可以重写父类的方法
    *
    *   继承: 子类继承父类中的属性和方法
    *
    *
    *
    *
    *
    *
    *
    * */

/*        function sum(x,y ,z) {
//            arguments
            if(!z){

                return str;
            }else {

                return num
            }

        }
        sum(1,2,"sss")*/
 /*
  public (公共
    private (私有的)
    static (静态)

//并发 处理上限
  public :viod function sum(int:num, string:numx){

  }

  private :viod function sum(int:num, string:numx){

  }
  private :viod function sum(int:num){

  }
  private :Number function sum(int:num){

  }
*/


    {

        /*console.log = function () {

        };*/


        console.log("11111");

    }
    {

        Number.prototype.toMPString = function () {
            try {
                let strParam = Math.floor(this).toString();
                let flag = /e/g.test(strParam);
                if (flag){
                    let sysbol = true;
                    if (/e-/.test(strParam)) {
                        sysbol = false
                    }
                    let index = Number(strParam.match(/\d+$/)[0]);
                    let basis = strParam.match(/^[\d\.]+/)[0].replace(/\./, '');

                    if (sysbol) {
                        strParam = basis.padEnd(index + 1, 0)
                    } else {
                        strParam = basis.padStart(index + basis.length, 0).replace(/^0/, '0.')
                    }
                }
                let o = ["K", "M", "B", "T", "P", "E", "Z", "Y"];
                let t = strParam.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
                let e = t.split(",");
                return e.length <= 2 ? t : e[0] + "," + e[1] + o[e.length - 3]
            } catch (t) {
                return this
            }
        };
        let num = 12345678;


        console.log("=========",Number(num).toMPString())

//        "12,345,678"
//        function numToSring(num) {
//            num? ===> Number


//            return str
//        }
//        let a = numToSring(num)

    }












</script>
</html>